A release version is the typical version of a firmware that is executed within a computing system deployed for operation in a computing platform such as a server farm, a data center, cloud computing environments, and the like. Debugging information is generally unavailable during the execution of the released version of firmware. Thus, it can be difficult to identify a root cause of functional issues that arise during the execution of the release version of firmware.
The functional issues can thus prompt an end-user or a developer to rebuild the firmware for execution in a debugging mode of operation in an attempt to re-create the functional issues and identify a root cause of one or more of the issues. Firmware operating in a debugging mode of operation (debugging mode) can provide debugging messages indicating aspects of its operation. Yet, rebuilding the firmware may impermissible or plain unfeasible.
Further, the functional issues that caused the firmware to be rebuilt may be difficult to reproduce because conditions of the computing system or a component thereof may change upon or after the firmware is rebuilt and contents of a non-volatile memory device that contains the firmware are updated. For instance, functional issues observed after multiple reboots, due to changes in management engine (ME) settings or non-volatile memory device settings, may not be easily reproducible when a new image for the firmware is updated in the non-volatile memory. Indeed, in some instances it is very difficult to re-create functional issues by rebuilding the firmware because the issues may arise from hardware instability after multiple reboots.
Therefore, even in instances in which faulty firmware can be rebuilt for execution in debugging mode, prior functional issues may be absent after the firmware is rebuilt—e.g., issues observed under operation with a particular image of a release version of the firmware may be irreproducible after the image is updated within the non-volatile memory device.
Still in instances in which observed or otherwise reported functional issues can be straightforwardly reproduced, the issues can pertain to a particular domain or a particular module of a computing device that includes the firmware. Domains can include, for example, peripheral component interconnect (PCI), central processing unit (CPU), memory, platform code, and so forth. Modules can include, for example, a PCI bus module; an intelligent platform management interface (IPMI) module; nonvolatile memory express (NVMe) module; universal serial bus (USB) module; or the like. Accordingly, without a priori knowledge of a likely domain and/or module that causes the functional issues, debugging the functional issues may be difficult or plainly unfeasible despite having access to debugging information.
Therefore, much remains to be improved in conventional technologies to select types of debugging messages that can be available for recordation during execution of a firmware in a debugging mode of operation.